/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package usuario;

/**
 *
 * @author Deico
 */
import conexion.DB;
import java.util.Date;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import javax.swing.JOptionPane;

public class noticias {
    
      public static  ArrayList<Object[]> getListaMensajesFecha(int diferenciaEnDias,String user){
        

         SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
         Calendar calendar =Calendar.getInstance(); //obtiene la fecha de hoy 
         String fecha1 = formatoDeFecha.format(calendar.getTime());
         calendar.add(Calendar.DATE, -diferenciaEnDias);
         String fecha2 = formatoDeFecha.format(calendar.getTime());
         ArrayList<Object[]> lista = new ArrayList();
         
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("SELECT * FROM mensajes WHERE fecha BETWEEN '"+fecha2+"' AND '"+fecha1+"' and mensajes.`to`='"+user+"';");
          System.out.println(fecha2+" "+fecha1);
          while (rs.next()) {
          
              lista.add(new Object[]{new Object[]{rs.getInt("id"),rs.getString("from"),rs.getString("asunto"),rs.getString("contenido"),
                  rs.getString("to"),rs.getDate("fecha")
              },"mensaje",rs.getDate("fecha")});
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return lista;
    }
     
     public static  ArrayList<Object[]> getListaRecetasFecha(int diferenciaEnDias,String user){
        

         SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
         Calendar calendar =Calendar.getInstance(); //obtiene la fecha de hoy 
         String fecha1 = formatoDeFecha.format(calendar.getTime());
         calendar.add(Calendar.DATE, -diferenciaEnDias);
         String fecha2 = formatoDeFecha.format(calendar.getTime());
         ArrayList<Object[]> lista = new ArrayList();
         
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("SELECT * FROM recetas WHERE fecha BETWEEN '"+fecha2+"' AND '"+fecha1+"' and recetas.`to`='"+user+"';");
          System.out.println(fecha2+" "+fecha1);
          while (rs.next()) {
          
              lista.add(new Object[]{new Object[]{rs.getInt("id"),rs.getString("from"),rs.getString("asunto"),rs.getString("contenido"),
                  rs.getString("to"),rs.getDate("fecha")
              },"documento",rs.getDate("fecha")});
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return lista;
    }

     public static  ArrayList<Object[]> getListaExamenesFecha(int diferenciaEnDias,String user){
        

         SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
         Calendar calendar =Calendar.getInstance(); //obtiene la fecha de hoy 
         String fecha1 = formatoDeFecha.format(calendar.getTime());
         calendar.add(Calendar.DATE, -diferenciaEnDias);
         String fecha2 = formatoDeFecha.format(calendar.getTime());
         ArrayList<Object[]> lista = new ArrayList();
         
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("SELECT * FROM examenes WHERE fecha BETWEEN '"+fecha2+"' AND '"+fecha1+"' and examenes.`to`='"+user+"';");
          System.out.println(fecha2+" "+fecha1);
          while (rs.next()) {
          
             lista.add(new Object[]{new Object[]{rs.getInt("id"),rs.getString("from"),rs.getString("asunto"),rs.getString("contenido"),
                  rs.getString("to"),rs.getDate("fecha")
              },"documento",rs.getDate("fecha")});
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return lista;
    }
     
     public static  ArrayList<Object[]> getListaLicenciasFecha(int diferenciaEnDias,String user){
        

         SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
         Calendar calendar =Calendar.getInstance(); //obtiene la fecha de hoy 
         String fecha1 = formatoDeFecha.format(calendar.getTime());
         calendar.add(Calendar.DATE, -diferenciaEnDias);
         String fecha2 = formatoDeFecha.format(calendar.getTime());
         ArrayList<Object[]> lista = new ArrayList();
         
        try {

          java.sql.Statement stat = DB.DB_CONNECTION.createStatement();
          ResultSet rs = stat.executeQuery("SELECT * FROM licencias WHERE fecha BETWEEN '"+fecha2+"' AND '"+fecha1+"' and licencias.`to`='"+user+"';");
          System.out.println(fecha2+" "+fecha1);
          while (rs.next()) {
          
              lista.add(new Object[]{new Object[]{rs.getInt("id"),rs.getString("from"),rs.getString("asunto"),rs.getString("contenido"),
                  rs.getString("to"),rs.getDate("fecha")
              },"documento",rs.getDate("fecha")});
              
          }
          rs.close();
          

         } catch (SQLException ex) { 
         JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
         }
        
        return lista;
    }
     
     public static  ArrayList<Object[]> getListaNoticias(int diferenciaEnDias,String user){
     
         ArrayList<Object[]> lista = new ArrayList();
         lista.addAll(getListaRecetasFecha(diferenciaEnDias, user));
         lista.addAll(getListaLicenciasFecha(diferenciaEnDias, user));
         lista.addAll(getListaMensajesFecha(diferenciaEnDias, user));
         lista.addAll(getListaRecetasFecha(diferenciaEnDias, user));
         Collections.sort(lista, new ordenaFecha());
         
         return lista;
     }
     
     private static class ordenaFecha implements Comparator{

        public ordenaFecha() {
        }

        @Override
        public int compare(Object o1, Object o2) {
              
                Object[] uno=(Object[]) o1;
                Object[] dos=(Object[]) o2;
                Date uno1= (Date) uno[2];
                Date dos2= (Date) dos[2];
                return (int) (dos2.getTime()-uno1.getTime());
        }
    }
     
     public static String tipo(String tipo,String mensaje){
         
         
         if(tipo.equalsIgnoreCase("mensaje")) return mensaje;
         if(tipo.equalsIgnoreCase("documento")) {
             String path = "subidos/"+mensaje;
             return "<a href=\""+path+"\">"+mensaje+"</a>";
         }
         return "ERROR";
     }
     
}
